PHP 8 এ Union Types একটি নতুন বৈশিষ্ট্য যা কোড লেখার সময় একাধিক ডেটা টাইপ একসাথে ব্যবহার করার সুবিধা দেয়। এর মাধ্যমে ফাংশন বা মেথডের প্যারামিটার এবং রিটার্ন টাইপের জন্য একাধিক ডেটা টাইপ নির্ধারণ করা সম্ভব। অর্থাৎ, কোনো একটি ভেরিয়েবল একাধিক ডেটা টাইপের মান ধারণ করতে পারে। এটি PHP-তে টাইপ সিস্টেমে একটি বড় উন্নতি এবং কোডের গতিশীলতা ও নির্ভুলতা বৃদ্ধি করে।
Union Types এর Syntax
PHP 8 এ Union Types সঠিকভাবে ব্যবহার করতে হলে | (পাইপ) চিহ্নটি ব্যবহার করতে হয়। এটি একাধিক টাইপের মধ্যে একটি নির্বাচন করতে সাহায্য করে।
সিনট্যাক্স:
function functionName(type1|type2 $parameter): type1|type2 {
// function body
}এখানে, type1|type2 নির্দেশ করে যে প্যারামিটারটি বা রিটার্ন ভ্যালু উক্ত টাইপগুলির যে কোনো একটি হতে পারে।
উদাহরণ
১. ফাংশনে Union Types ব্যবহার
ধরা যাক, একটি ফাংশন যেটি স্ট্রিং বা ইন্টিজার ধরনের ইনপুট গ্রহণ করবে এবং সেই অনুযায়ী একটি স্ট্রিং বা ইন্টিজার রিটার্ন করবে:
<?php
function addNumbers(int|string $a, int|string $b): int|string {
if (is_string($a) || is_string($b)) {
return $a . $b; // যদি স্ট্রিং হয়, সংযুক্ত করবে
}
return $a + $b; // যদি ইন্টিজার হয়, যোগফল প্রদান করবে
}
echo addNumbers(5, 10); // আউটপুট: 15
echo addNumbers('Hello', ' World'); // আউটপুট: Hello World
?>এখানে, ফাংশন addNumbers স্ট্রিং বা ইন্টিজার টাইপের মান গ্রহণ করতে পারে এবং সেগুলোর ভিত্তিতে কনক্যাটেনেশন বা যোগফল করবে।
২. ক্লাস প্রপার্টি এবং মেথডে Union Types ব্যবহার
এছাড়া ক্লাসে প্রপার্টি এবং মেথডেও Union Types ব্যবহার করা সম্ভব।
<?php
class Calculator {
public int|string $value;
public function __construct(int|string $value) {
$this->value = $value;
}
public function getValue(): int|string {
return $this->value;
}
}
$calc1 = new Calculator(10);
echo $calc1->getValue(); // আউটপুট: 10
$calc2 = new Calculator('Value is 20');
echo $calc2->getValue(); // আউটপুট: Value is 20
?>এখানে Calculator ক্লাসে $value প্রপার্টি int|string টাইপের হতে পারে। এটি যখন int টাইপের হবে, তখন একটি সংখ্যা ধারণ করবে এবং যখন string টাইপের হবে, তখন একটি স্ট্রিং ধারণ করবে।
৩. অপশনাল Union Types
PHP 8 তে, আপনি একটি প্রপার্টি বা প্যারামিটার null টাইপও অনুমোদন করতে পারেন। এই ক্ষেত্রে ? সিম্বলটি ব্যবহার করা হয়:
<?php
function showMessage(string|int|null $message): void {
if ($message === null) {
echo "No message.";
} else {
echo $message;
}
}
showMessage("Hello, World!"); // আউটপুট: Hello, World!
showMessage(42); // আউটপুট: 42
showMessage(null); // আউটপুট: No message.
?>এখানে string|int|null এর মাধ্যমে message প্যারামিটারটি string, int অথবা null হতে পারে।
উপসংহার
PHP 8-এর Union Types ফিচারটি ফাংশন, মেথড, বা প্রপার্টির টাইপে একাধিক ভিন্ন ধরনের ডেটা অনুমোদন করতে সাহায্য করে। এটি কোডের টাইপ সিস্টেমকে আরও শক্তিশালী ও গতিশীল করে তোলে এবং আপনাকে আরও বেশি নমনীয়তা প্রদান করে। | (পাইপ) সিম্বলটি ব্যবহার করে আপনি একাধিক টাইপের সংমিশ্রণ করতে পারেন, যা কোডের ত্রুটি দূর করতে সহায়ক।
Read more